1) 分割表の作成

データ入力

a <- 17
b <- 6
c <- 11
d <- 20

分割表作成

cross <- matrix(c(a,b,c,d), nrow = 2, byrow = TRUE,
                      dimnames = list(
                        c("高BMI群", "低BMI群"),
                        c("短距離群", "長距離群")
                      ))
cross
##         短距離群 長距離群
## 高BMI群       17        6
## 低BMI群       11       20

2) オッズ比と95%信頼区間の算出

オッズ比

\[ \text{OR} = \frac{a/c}{b/d} = \frac{a \cdot d}{b \cdot c} \]

OR <- (a * d) / (b * c)
OR
## [1] 5.151515

対数オッズ比

\[ \log(\text{OR}) = \log\left( \frac{a \cdot d}{b \cdot c} \right) \]

オッズ比は正の数ですが,その対数をとることで0を中心に左右対称な値に変換できます. この操作により,正規分布を仮定した統計解析が可能になります.

対数オッズ比の標準誤差

\[ SE\left( \log(\text{OR}) \right) = \sqrt{ \frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d} } \]

SE_log_OR <- sqrt(1/a + 1/b + 1/c + 1/d)
SE_log_OR
## [1] 0.6053092

95%信頼区間の算出

\[ \begin{aligned} \log(\text{OR}) &\pm 1.96 \times \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}} \\ \Rightarrow \quad \text{OR}_{\text{lower}}, \text{OR}_{\text{upper}} &= \exp\left( \log(\text{OR}) \pm 1.96 \times \sqrt{\frac{1}{a} + \frac{1}{b} + \frac{1}{c} + \frac{1}{d}} \right) \end{aligned} \]

標準正規分布では,約95%の値が平均±1.96の範囲内に収まるため,推定値の周囲±1.96×標準誤差の範囲を信頼区間として採用します.

対数オッズ比をexp()_指数関数でもとの値に書き戻します.

log_OR <- log(OR)
CI_lower <- exp(log_OR - 1.96 * SE_log_OR)
CI_upper <- exp(log_OR + 1.96 * SE_log_OR)

オッズ比と95%信頼区間の表示

cat("オッズ比と95%信頼区間(外れ値を除く54例) =",
    round(OR, 3), 
    "[", round(CI_lower, 3), ",", round(CI_upper, 3), "]\n")
## オッズ比と95%信頼区間(外れ値を除く54例) = 5.152 [ 1.573 , 16.873 ]